package cn.songlin.utils;

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;

public class ExcelUtil {

	/**
	 * 导出Excel
	 * 
	 * @param sheetName
	 *            sheet名称
	 * @param title
	 *            标题
	 * @param values
	 *            内容
	 * @param wb
	 *            HSSFWorkbook对象
	 * @return
	 */
	public static HSSFWorkbook getHSSFWorkbook(String sheetName, String[] title, String[][] values, HSSFWorkbook wb) {

		// 第一步，创建一个HSSFWorkbook，对应一个Excel文件
		if (wb == null) {
			wb = new HSSFWorkbook();
		}

		// 第二步，在workbook中添加一个sheet,对应Excel文件中的sheet
		HSSFSheet sheet = wb.createSheet(sheetName);

		// 第三步，在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
		HSSFRow row = sheet.createRow(0);

		// 第四步，创建单元格，并设置值表头 设置表头居中
		HSSFCellStyle style = wb.createCellStyle();
		style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式

		// 声明列对象
		HSSFCell cell = null;

		// 创建标题
		for (int i = 0; i < title.length; i++) {
			cell = row.createCell(i);
			cell.setCellValue(title[i]);
			cell.setCellStyle(style);
		}
		if (values != null) {
			// 创建内容
			for (int i = 0; i < values.length; i++) {
				row = sheet.createRow(i + 1);
				for (int j = 0; j < values[i].length; j++) {
					// 将内容按顺序赋给对应的列对象
					row.createCell(j).setCellValue(values[i][j]);
				}
			}
		}
		return wb;
	}

	public static HSSFCellStyle createHeadStyle(HSSFWorkbook wb){
		HSSFCellStyle heaDStyle = wb.createCellStyle();
		// 设置这些样式
		heaDStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
		heaDStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中

		// 背景色
		heaDStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
		heaDStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
		heaDStyle.setFillBackgroundColor(HSSFColor.YELLOW.index);
		// 设置边框
		heaDStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		heaDStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		heaDStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
		heaDStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);

		// 生成一个字体
		HSSFFont font = wb.createFont();
		font.setFontHeightInPoints((short) 12);
//		font.setColor(HSSFColor.RED.index);
		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
		font.setFontName("宋体");
		heaDStyle.setFont(font);
		return heaDStyle;
	}
}